package pruebasUnitarias;

import unidades.Civil;
import civilizacion.Civilizacion;
import edificios.Casa;
import excepcionesGenerales.ExcepAtributoInvalido;
import mapas.Mapa;
import mapas.Region;
import junit.framework.TestCase;

public class PruebaRecaudacion extends TestCase {
	
	public void testEntregaDinero(){
		//Creo lo necesario para hacer las pruebas
		Mapa mapa = new Mapa();
		Civilizacion cvl = new Civilizacion("Cvl", mapa);
		//Creo una region que da 2 de dinero por turno
		Region region = new Region("R1",2);
		//Agrego la region al mapa y la conquisto agregando un civil y una casa
		mapa.AgregarRegion(region);
		region.agregar(new Casa(cvl,region));
		region.agregar(new Civil(cvl, region));
		try {
			cvl.agregarRegion(region); //Agrego la region a la civilizacion
		} catch (NullPointerException e) {
			fail("No tendria que haber tirado error");
		} catch (ExcepAtributoInvalido e) {
			fail("No tendria que haber sido invalido el atributo");
		} 
		//Creo una region que da 3 de dinero por turno
		Region region2 = new Region("R2",3);
		//Agrego la region al mapa y la conquisto agregando un civil y una casa
		mapa.AgregarRegion(region2);
		region2.agregar(new Casa(cvl,region2));
		region2.agregar(new Civil(cvl, region2));
		//Agrego la region a la civilizacion
		try {
			cvl.agregarRegion(region2);
		} catch (NullPointerException e) {
			fail("No tendria que haber tirado error");
		} catch (ExcepAtributoInvalido e) {
			fail("No tendria que haber sido invalido el atributo");
		} 
		//obtengo el dinero actual de la civilizacion, que deberia ser 0
		//porque fue recien creada
		int dineroAnterior = cvl.getDinero();
		assertTrue(cvl.getDinero() == 0);
		//Obtengo el dinero de las regiones
		cvl.recibirDineroRegiones();
		//Me fijo si el dinero actual de la civilizacion es igual a 5
		assertEquals(5, cvl.getDinero()-dineroAnterior);
	}
	
}
